package com.hyg.common.utils;

import android.text.TextUtils;

import java.math.BigDecimal;

/**
 * Author: huangyuguang
 * Date: 2022/5/5
 * BigDecimal的一些方法
 * stripTrailingZeros() 去除末尾多余的0
 * toPlainString() 避免输出科学计数法
 */
public class BigDecimalUtil {

    /**
     * 加
     */
    public static BigDecimal add(String v1, String v2){
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.add(b2);
    }

    /**
     * 减
     */
    public static BigDecimal sub(String v1, String v2){
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.subtract(b2);
    }

    /**
     * 乘
     */
    public static BigDecimal mul(String v1, String v2){
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.multiply(b2);
    }

    /**
     * 除
     */
    public static BigDecimal div(String v1, String v2){
        BigDecimal b1 = new BigDecimal(v1);
        BigDecimal b2 = new BigDecimal(v2);
        return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小数
    }

    /**
     * 保留n位小数
     */
    public String setScale(int n,String s){
        if(TextUtils.isEmpty(s)) return "0.00";
        return new BigDecimal(s).setScale(n,BigDecimal.ROUND_HALF_UP).toPlainString(); //四舍五入，2.35变成2.4
//        return new BigDecimal(s).setScale(n,BigDecimal.ROUND_DOWN).toPlainString(); //直接删除多余的小数位，如2.35会变成2.3
//        return new BigDecimal(s).setScale(n,BigDecimal.ROUND_UP).toPlainString(); //进位处理，2.35变成2.4
    }
}
